<?php
/**
 * class.param.php          参数处理类
 * 
 * @author                  mashanling(msl-138@163.com)
 * @date                    2011-09-02 1:49:38
 * @last modify             2012-02-28 01:49:38 by mashanling
 */

!defined('ROOT') && exit('Access Denied');

class Param {
    /**
     * $_GET
     * 
     * @param string $name               参数名
     * @param string $type               值类型，默认：string，字符串
     * @param bool   $trim               是否删除值两边空白，默认：true，删除
     * @param bool   $unhtmlspecialchars 是否将html实体转化为对应标签，默认：true，转化
     * 
     * @return mixed 处理后的参数值
     */
    static function get($name, $type = 'string', $trim = true, $unhtmlspecialchars = true) {
        return self::request($name, 'get', $type, $trim, $unhtmlspecialchars);
    }
    
    /**
     * $_GET
     * 
     * @param string $name               参数名
     * @param string $type               值类型，默认：string，字符串
     * @param bool   $trim               是否删除值两边空白，默认：true，删除
     * @param bool   $unhtmlspecialchars 是否将html实体转化为对应标签，默认：true，转化
     * 
     * @return mixed 处理后的参数值
     */
    static function post($name, $type = 'string', $trim = true, $unhtmlspecialchars = true) {
        return self::request($name, 'post', $type, $trim, $unhtmlspecialchars);
    }
    
    /**
     * $_GET
     * 
     * @param string $name               参数名
     * @param string $type               值类型，默认：string，字符串
     * @param bool   $trim               是否删除值两边空白，默认：true，删除
     * @param bool   $unhtmlspecialchars 是否将html实体转化为对应标签，默认：true，转化
     * 
     * @return mixed 处理后的参数值
     */
    static function cmd($index, $type = 'string', $trim = true, $unhtmlspecialchars = true) {
        return self::request($index, 'cmd', $type, $trim, $unhtmlspecialchars);
    }
    
    /**
     * $_GET
     * 
     * @param string $name               参数名
     * @param string $type               值类型，默认：string，字符串
     * @param bool   $trim               是否删除值两边空白，默认：true，删除
     * @param bool   $unhtmlspecialchars 是否将html实体转化为对应标签，默认：true，转化
     * 
     * @return mixed 处理后的参数值
     */
    static private function request($name, $method = 'get', $type = 'string', $trim = true, $unhtmlspecialchars = true) {
        if ($method == 'cmd') {
            $string = isset($_SERVER['argv']) && isset($_SERVER['argv'][$name]) ? $_SERVER['argv'][$name] : '';
        }
        else {
            $method = $method == 'get' ? $_GET : $_POST;
            $string = isset($method[$name]) ? $method[$name] : '';
        }
        
        $string = $trim ? trim($string) : $string;
        $string = $unhtmlspecialchars ? htmlspecialchars_decode($string, ENT_QUOTES) : $string;
        
        return self::checkType($string, $type);
    }
    
    /**
     * 返回指定类型值
     * 
     * @param string $string 源字符串
     * @param string $type   类型，默认：string，字符串
     * 
     * @return mixed 指定类型的值值
     */
    static private function checkType($string, $type = 'string') {
        
        switch ($type) {
            case 'int':    //整数
                $string = intval($string);
                break;
                
            case 'float':    //符点
                $string = floatval($string);
                break;
                
            default:
                break;
        }
        
        return $string;
    }
}
?>